perm filename INTFAC.FAI[SYS,HE]7 blob sn#073003 filedate 1973-11-20 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00008 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002		TITLE INTFAC
C00004 00003		THIS IS THE 32 WORD MAIL MESSAGE
C00005 00004	PACK:	(INTEGER PTR,TIMEREFERENCE REAL SOLN)
C00006 00005	ISSERV:	0
C00008 00006	RSS:	SKIPE PTYLIN
C00009 00007	DOIT:	MOVE 1,-1(17)
C00010 00008	ACT:	HRLI MASTER
C00011 ENDMK
C⊗;
	TITLE INTFAC
	INTERNAL DOIT,ARMPOS,ARM.JOINT,PACK
	INTERNAL HANDFN,ARMFN,ARMPROCEED
	EXTERNAL ARM.VECTOR,ARM.MOTION,ARM.STATUS,ARM.SEG
	EXTERNAL ARM.WAIT,FELT,STOP.ON,ARM.TO
	EXTERNAL ARM.MESSAGE,JOBREN,JOBSA

	P←17
	MASTER←←16661
	RELOC←←40
	TOUCH←←10
	HOLD←←20

ARM.JOINT:MOVEI 
	SKIPA
ARMPOS:	MOVEI 1
ONCE:	HRRZ 1,JOBSA
	HRRM 1,RSTSR
	HRRZ 1,JOBREN
	HRRM 1,REST
	CALLI 1,30
	MOVEM 1,SEGJOB
	CALLI 1,24
	MOVE 3,[POINT 6,0,35]
	MOVE 4,[POINT 7,MYPPN-1,35]
	MOVEI 7,1
I5:	MOVEI 5,2
C7:	ILDB 6,3
	ADDI 6,40
	CAIE 6,40
	IDPB 6,4
	SOJGE 5,C7
	SOJGE 7,[MOVEI 6,"/"
		IDPB 6,4
		JRST I5]

	MOVEI 6,15
	IDPB 6,4
	MOVEI 6,12
	IDPB 6,4
	MOVE 1,[JRST ACTIT]
	MOVEM 1,ONCE
ACTIT:	MOVEI 1,RSS
	HRRM 1,JOBREN
	MOVEI 1,RSTS
	HRRM 1,JOBSA
	JRST ACT

REQU:	0
	EXE
MYPPN:	0
	0

;	THIS IS THE 32 WORD MAIL MESSAGE

EXE:	XWD MASTER,0	;18-27 NARGS, 30 RELOC, 31 HOLD, 32 SOTCH, 33-35 EXE
			;0 READ IN OCTAL
			;1 READ IN DECIMAL
			;2 EXECUTE FILE
			;3 EXECUTE FUNCTION
FILE:	0
PPPN:	0
BAND:	0
SEGJOB:	0
NAME:	0
STATUS:	0
SEGMENT:0
NERVES:	0
ETOR:	0
THETA:	0
ARGS:	BLOCK =21
JUNK:	BLOCK =32
PACK:	;(INTEGER PTR,TIME;REFERENCE REAL SOLN);
	MOVE 10,-3(P)
	MOVE 1,-2(P)
	MOVEM 1,(10)	;TIME
	HRLZ 5,-1(P)
	BLT 5,4		;PICK UP A0-A4
	MOVM 6,4	;WHERE THE LARGEST WILL END UP
	MOVEI 5,3
L1:	MOVM 7,(5)
	CAMGE 6,7
	MOVE 6,7
	SOJGE 5,L1
	TDZ 6,[XWD 777,777777]	;THE LARGEST IS NOW IN 6
	ADD 6,[XWD  12000,0]	;THE EXPONENT TO PUT FRACTION AND SIGN INTO RT. HALF
	HLLM 6,-1(10)
	UFA 6,4
	HRLM 7,-3(10)
	UFA 6,3
	HRRM 7,-3(10)
	UFA 6,2
	HRLM 7,-2(10)
	UFA 6,1
	HRRM 7,-2(10)
	UFA 6,0
	HRRM 7,-1(10)
	SUB P,[XWD 4,4]
	JRST @4(P)

ISSERV:	0
SEE:	SKIPN 1,REQU
	JRST[	PTYGET 10
		JRST[	OUTSTR[ASCIZ/NO PTYS AVAILABLE
/]
			CALLI 12]
		HRLI 10,0
		MOVEM 10,PTYLIN
	GJ:	MOVEI 11,[ASCIZ/L
/]
		PTWRS7 10
	WH:	PTRD1W 10
		CAIE 11,"#"
		JRST[	CAIE 11,"?"
			JRST WH
			OUTSTR[ASCIZ\NO JOB FOR SERVO
TYPE C/R TO TRY AGAIN
\]
			INCHWL
			INCHWL
			JRST GJ]
		MOVEI 11,MYPPN
		PTWRS7 10
	WCC:	PTRD1W 10
		CAIE 11,"↑"
		JRST WCC
	SPJ:	SETZ 1,
		MOVEI 11,[ASCIZ/PJ
/]
		PTWRS7 10
	WJN:	PTRD1W 10
		CAIGE 11,72
		CAIG 11,60
		JRST ET
		JRST[	SUBI 11,60
			IMULI 1,12
			ADD 1,11
			JRST WJN]
	ET:	JUMPE 1,WJN
		CAIE 11,12
		JRST WJN
		MOVEM 1,REQU
		MOVEI 11,[ASCIZ/RU YELO[SYS,HE]
/]
		PTWRS7 10
	WCC2:	PTRD1W 10
		CAIE 11,"!"
		JRST WCC2
		JRST @ISSERV]
GOTONE:	JRST @ISSERV
PTYLIN:	0
RSS:	SKIPE PTYLIN
	SETZM REQU
	SKIPN WFSF
REST:	JRST .
	SETZM WFSF
	SKIPN 10,PTYLIN
	POPJ P,
RSS1:	PTRD1S 10
	JRST [	MOVEI 11,[XWD 600600,0]
		PTWRS9 10
	RSS3:	PTRD1W 10
		CAIE 11,"."
		JRST RSS3
		MOVEI 11,[ASCIZ/RU YELO[SYS,HE]
/]
		PTWRS7 10
	RSS2:	PTRD1W 10
		CAIE 11,"!"
		JRST RSS2
		POPJ P,]
	TTYUUO 1,11
	JRST RSS1
RSTS:	SKIPE PTYLIN
	SETZM REQU
RSTSR:	JRST .
WFSF:	0
SAVE:	0
DOIT:	MOVE 1,-1(17)
	MOVEM 1,FILE
	MOVEM 1,ARM.WAIT
	MOVE 1,-2(17)
	HRRZM 1,BAND
	MOVEI 2
	MOVE 1,-3(P)
	JUMPN 1,.+2		;DOES HE HAVE A DSKPPN?
	CALLI 1,400071		;NO GET MINE
	MOVEM 1,PPPN
	PUSHJ P,ACT
RETM:	SUB 17,[XWD 4,4]
	JRST @4(17)

ARMFN:	MOVEI 3+HOLD+RELOC
	HRL 1,ARM.ME
	HRRI 1,ARGS
	BLT 1,ARGS+24
	MOVE 1,-1(17)
	DPB 1,[POINT 9,0,26]
	PUSHJ P,ACT
	SUB P,[XWD 2,2]
	JRST @2(P)

HANDFN:	MOVEI 3+HOLD
	MOVE 1,ARM.ME
	MOVE 1,(1)
	MOVEM 1,ARGS
	JRST ACT

ARMPRO:	MOVE 1,-1(P)
	MOVEM 1,ARGS
	MOVEI 3
	PUSHJ P,ACT
	SUB P,[XWD 2,2]
	JRST @2(P)

ACT:	HRLI MASTER
	SETZM ARM.STATUS
	SKIPE STOP.ON
	TRO TOUCH
	MOVEM EXE
	MOVE 1,ARM.WAIT
	MOVEM 1,ARM.MOTION
	SETZM ARM.WAIT
	JSR ISSERV
CL:	SRCV JUNK
	JRST SSF
	JRST CL
SSF:	SETOM WFSF
 	SEND REQU
	JRST[		MOVEI 1,2
			CALLI 1,31
			JRST .-1]
WFA:	WRCV EXE
	SETZM WFSF
	MOVE 1,ARM.VE
	MOVEI 2,6(1)
	HRLI 1,THETA
	BLT 1,(2)
	MOVE 1,ARM.TO
	MOVEI 2,5(1)
	HRLI 1,ARGS+10
	BLT 1,(2)
	MOVE 1,ARM.MOTION
	MOVEM 1,ARM.WAIT
	SETZM ARM.MOTION
	MOVE 1,STATUS
	MOVEM 1,ARM.STATUS
	POPJ P,

	END